#include <stdio.h>
#include <stdlib.h>

typedef int data_t;

typedef struct list {
    int *data;    //此处存放数据
    int last;     //存放当前最后一个索引
    int size;     //列表的大小
} list_t;

list_t *create_list(int size) {
    list_t *p;
    p = malloc(sizeof(list_t));
    if(NULL == p) return NULL;
    p->data = malloc(size * sizeof(data_t));
    if(NULL == p->data) {
        free(p);
        return NULL;
    }
    p->last = -1;
    p->size = size;
    return p;
}

int insert_index_list(list_t *p, int index, int data) {
    int i;
    for(i = p->last; i >= index; i--) {
        p->data[i+1] = p->data[i];
    }
    printf("--%d::", data);
    p->data[index] = data;
    p->last++;

    return 0;
}

void print_list(list_t *p) {
    int i;
    for(i = 0; i < p->last; i++) {
        printf("%d-%d\n", i, p->data[i]);
    }
    printf("total: %d", p->last+1);
}

int main(int argc, const char *argv[]) {
    list_t *p;
    p = create_list(10);
    int i;
    for(i = 0; i < 10; i++) {
        insert_index_list(p, 0, i);
    }
    print_list(p);
}

